1. Technical Field
The present invention relates to storing data in a computing system. More particularly, some examples of the invention concern storing data in array of storage devices in a manner that provides enhanced protection from data loss.
2. Description of Related Art
Important data is often stored in storage devices in computing systems. Because storage devices can fail and data in failed storage devices can be lost, techniques have been developed for preventing data loss and restoring data when one or more storage devices fail.
One technique for preventing data loss comprises storing parity information on a storage device (such as a disk drive), which is a member of a storage array, and storing customer data on one or more of the other remaining storage devices in the array. (Herein a disk drive may be referred to as a “disk”, which is a simplification in common use.) With this technique, if a storage device fails, parity information can be used to reconstruct the data that was on the failed storage device. Moreover, if sufficient parity information is added to another storage device, the additional parity information may be used to reconstruct data from more than one failed storage device. Another technique for preventing data loss, called data mirroring, comprises making a duplicate copy of data on a separate storage device. If a storage device fails, data can be restored from the copy of the data.
A Redundant Array of Inexpensive (or Independent) Disks (RAID), may be used to provide a data storage system that has increased performance and capacity. Data mirroring and parity information storage, or a combination of the two, may be implemented on a RAID array to provide data protection. Also, a technique called striping may be utilized, wherein data records and parity information are divided into strips such that the number of strips equals the number of disks in the array. Each strip is written or “striped” to each of the different disks in the RAID array to balance the load across the disks and to improve performance. A group of strips comprising one pass across all of the drives in a RAID is called a stride. Several RAID protocols have been devised, wherein different mirroring, parity, and striping arrangements are employed. As an example, in a RAID 5 array consisting of six disks, five data strips and one parity strip are striped across the six disks, with the parity information rotated across the disks. The rotation of the parity across the disks ensures that parity updates to the array are shared across the disks. RAID 5 provides a redundancy of one, which means that all data can be recovered if any one and only one of the disks in the array fails.
Although techniques are known for providing greater storage device redundancy to permit data recovery after the failure of more than one storage device, these techniques generally require storing additional parity information on additional storage devices (for example, by using higher Hamming codes), or require additional mirroring on additional storage devices. RAID 6 has an arrangement similar to RAID 5, but requires two parity strips in each stride, to provide a redundancy of two. The storage efficiency for a RAID 6 array for the same data storage capacity is lower than for a RAID 5 array, because a RAID 6 array requires an additional disk. Further, reconstructing lost data from parity information can be time consuming. Consequently, known techniques have undesirable capacity and performance tradeoffs that must be weighed against the need for increased fault tolerance and quick data recovery.